/**
 * @file MessageDialog.cpp
 *
 * Klasa okienka komunikatu programu - implementacja.
 *
 * @author Zbigniew Siciarz
 * @date 2009
 * @version 2.0.0
 * @since 2.0.0
 */

#include "MessageDialog.h"

#include <QApplication>


QWidget* MessageDialog::s_parent = 0;

/**
 * Tworzy okno dialogowe z wiadomością.
 *
 * @param title tytuł wiadomości
 * @param message treść wiadomości
 */
MessageDialog::MessageDialog(const QString& title, const QString& message)
    : QDialog(s_parent)
{
	ui.setupUi(this);
	setWindowTitle(qApp->applicationName() + " " + qApp->applicationVersion());

	if (!title.isEmpty())
	    setTitle(title);

	if (!message.isEmpty())
	    setMessage(message);

	layout()->setSizeConstraint(QLayout::SetFixedSize);
}

/**
 * Pokazuje okienko z informacją.
 *
 * @param title tytuł wiadomości
 * @param message treść wiadomości
 */
void MessageDialog::showInformation(const QString& title,
        const QString& message)
{
    MessageDialog dlg(title, message);
    dlg.exec();
}

/**
 * Pokazuje okno z informacją o błędzie spowodowanym odczytem/zapisem pliku.
 *
 * @param e obiekt wyjątku operacji plikowej
 */
void MessageDialog::exception(Dogz::FileException& e)
{
    showInformation(tr("Błąd pliku %1").arg(e.getFilename()), e.what());
}

/**
 * Pokazuje okno z informacją o błędzie bazy danych.
 *
 * @param e obiekt wyjątku bazy danych
 */
void MessageDialog::exception(Dogz::DbException& e)
{
    QString info, query = e.getQuery();

    if (!query.isEmpty())
        info = tr("Zapytanie:\n%1\n\nBłąd SQL:\n%2").arg(query).arg(e.what());
    else
        info = tr("Błąd SQL:\n%1").arg(e.what());

    showInformation(tr("Błąd bazy danych"), info);
}

